Caching is a technique for storing data in fast memory that will likely be accessed within a short period of time. Conventionally, a cache consists of a number of frames or pages of data stored in a random access memory (RAM), where each page is a physically contiguous chunk of bytes. When a requested page is found in the cache, it is called a "cache hit," while a "cache miss" occurs when a requested page is not resident in the cache. A page that contains updated data that has not been reflected on the disk is called a dirty page.
If a page from the disk needs to be brought into the cache, and if there are no free pages available in the cache, then the desired page can be brought into the cache by overwriting a clean page or by flushing a dirty page to the disk. The goal of an efficient cache management strategy is to maximize cache hits and minimize the number of cache misses by executing a strategic page replacement policy. Cache management consists of strategically maintaining the pages in the cache in such a manner that the pages are available in the cache whenever an application makes a request for them.
Video on demand and other continuous media applications require data to be stored and retrieved at predefined rates. For example, video data compressed using the MPEG-1 standard requires a transfer rate of 1.5 Mbps. Real time clients typically access continuous media sequentially. In addition, multiple clients may be accessing the same data simultaneously, although with phase differences. Typically, when replacing pages in the buffer cache and prefetching data into the buffer cache for multiple clients, file systems and storage servers do not exploit the fact that accesses to continuous media data tends to be sequential in nature.
Many caching schemes have been proposed or suggested in many commercial and academic software systems. The least recently used (LRU) page replacement policy is the standard method in conventional operating system file systems. The least recently used (LRU) strategy selects the page that has not been used for the longest period of time since the last cache miss condition as the replacement victim for a newly desired page. Other replacement policies include the least frequently used (LFU) and most recently used (MRU) policies, or hybrids thereof.
As apparent from the above-described deficiencies with conventional cache management strategies, a need exists for a server cache management system that exploits the sequential nature of continuous media data access. A further need exists for a cache management system that provides increased throughput. Yet another need exists for a cache management system that utilizes simple data arrays to keep track of pages. A further need exists for a cache management system that more efficiently processes real time clients, and therefore has additional time for processing non-real time clients.